perm filename 11INFO[ZZZ,LCS] blob sn#432061 filedate 1979-05-08 generic text, type T, neo UTF8
C***  MUSIC-11  **** MUSIC5-BASED SOUND GENERATION PROGRAM FOR PDP11 ***
C***** STANFORD-IRCAM MUSIC FORMAT TO MUSIC-5 FORMAT TRANSLATOR ******
          LELAND SMITH, IRCAM, PARIS, JUNE 1977, STANFORD, JAN '79
 
 THIS PROGRAM CONVERTS STANFORD MUSIC FORMAT TO MUSIC-5 FORMAT, 
 ALLOWING 'NOT CARDS' TO CONTAIN THE LETTER NAMES OF NOTES, (C,D,E,F,
 G,A,B; S=SHARP,F=FLAT), PARAMETER NUMBERS DESIGNATED AS P1, P2,
 P3, ETC., FUNCTION NAMES AS F1, F2, ETC., AND ARITHMETIC EXPRESSIONS.
 
 ARITHMETIC EXPRESSIONS MAY CONTAIN THE OPERATORS   +   -   *   /  AND
 ** (X**Y = X TO THE POWER OF Y).
 SPACES BEFORE OR AFTER THESE OPERATORS ARE IGNORED!  HENCE IN ORDER TO
 PUT A NEGATIVE NUMBER INTO A PARAMETER THE MINUS SIGN MUST BE PRECEDED
 BY A COMMA.   100  - 440   WILL PRODUCE THE SINGLE VALUE -340, WHEREAS
 100,  - 440  PRODUCES TWO SEPARATE VALUES.   A PARAMETER MAY BE SETUP BY
 REFERRING TO OTHER PARAMETERS.   IF P3=440 AND P5=2 THEN THE EXPRESSION
 2**(1/24) * P3 /P5  WILL PUT THE VALUE 226.45 INTO A PARAMETER FIELD.
 ALL OPERATIONS ARE DONE IN LEFT-TO-RIGHT ORDER (UNLIKE FORTRAN OR ALGOL
 WHICH ALWAYS DO DIVIDES AND MULTIPLIES FIRST.)  THUS A STATEMENT AS
 5+7/2 WILL GIVE THE ANSWER 6.  HOWEVER PARENTHESES MAY BE USED.  5+(7/2)
 GIVES THE ANSWER 8.5 .   PARENTHESES MAY NOT BE 'NESTED'.
 
 INSTRUMENT DEFINITIONS AND GEN FUNCTION INPUT ARE SIMILAR TO THE
 TRADITIONAL MUSIC5 FORMAT AS DESCRIBED IN THE BOOK BY MATHEWS, ET AL.
 (HOWEVER THIS PROGRAM AUTOMATICALLY ADDS 2 INTERNALLY TO ALL PARAMETER
 NUMBERS GIVEN WITHIN INSTRUMENTS.  FROM THE USER'S POINT OF VIEW THIS
 IS NOT IMPORTANT.)  THE HIGHEST PARAMETER NUMBER AVAILABLE IN INSTRUMENT
 DEFINITIONS IS P30.  THE WORD 'INS' NEED NOT BE FOLLOWED BY A BEGIN TIME.
 (IN THIS PROGRAM THIS NUMBER WILL ALWAYS BE 0 ANYWAY.)  THUS YOU CAN TYPE
 INS 0 2;  OR  INS 2;  AND INSTRUMENT DEFINITION 2 WILL BEGIN.
 
 THE UNIT GENERATORS AVAILABLE ARE 'OUT','OSC','AD2','RAN','ENV','STR',
 'AD3','AD4','MLT','DIV','RAH','END','REV','OPT','NOS','SUB','INP',
 'COS'.   (SEE THE DOCUMENT 'USEM11' FOR DESCRIPTIONS.)

   (DIV=DIVIDE 1ST ARG. BY 2ND ARG.; SUB=SUBTRACT 2ND ARG. FROM 1ST ARG.;
    REV=REVERBERATION; NOS=OSC WHICH ACCEPTS NEG. FREQ.; 
    COS=CONTINUING OSC, I.E. DOES NOT RESET POINTER; OPT=OPTIONAL UNIT GEN.;
    INP=INPUT BOX - TO READ AND PROCESS EXTERNALLY CREATED SOUND FILES.)

 IN ADDITION 'SRT'  IS USED TO SET THE SAMPLING RATE.
 HOWEVER THIS VARIABLE MUST BE SET USING THE LEFT
 ARROW, IN THE STANFORD FORMAT.  (E.G.  SRT←12800;)  THIS ALSO 
 CAN BE SET IN THE NORMAL STANFORD MUSIC FORMAT. (SRATE←25600;)  THE
 NUMBER OF CHANNELS MUST BE SET IN THE STANFORD MANNER, NCHNS←1; OR
 NCHNS←2;.
 
   'FP' AND 'DP' ARE USED TO DESIGNATE CERTAIN PARAMETERS FOR CONVERSION
 TO INCREMENT NUMBERS WHICH WILL BECOME FREQUENCY OR DURATION INPUTS
 TO OSCILATORS, ETC. FOR EXAMPLE IF P3 WERE TO BE A FREQUENCY INPUT IN AN
 OSC, YOU WOULD TYPE: OSC B3 FP3 B2 P5;   IF P14 WERE TO BE A DURATION 
 INPUT YOU MIGHT TYPE:  OSC DP14 P7 B3 F3;
  (IN PLACES WHERE A FUNCTION IS EXPECTED YOU MAY TYPE EITHER AN "F"
   NUMBER OR A PARAMETER DESIGNATION.  THE MUSIC5 "SET PN" IS NOT NEEDED.)
 
 ASIDE FROM THE INSTRUMENT AND GEN DEFINITIONS THIS PROGRAM WILL OPERATE
 IN AN INTERACTIVE MODE MUCH AS THE STANFORD-IRCAM MUSIC PROGRAM, AS
 DESCRIBED IN USEMUS.DOC[DOC,LCS] (OR USEM11.DOC).

********* THE MAJOR DIFFERENCES FROM MUSIC5 ARE AS FOLLOWS **********
 
       AS EACH 'MUSIC' STATEMENT IS TRANSLATED THE MUSIC-5 FORMAT 
       MAY BE TYPED OUT.  THIS TYPEOUT MAY BE SUPPRESSED BY TYPING
       THE SYMBOL '&'.  RETYPING THIS SYMBOL WILL CAUSE THE TYPEOUT
       TO BEGIN AGAIN.
 
       AFTER YOU ARE IN 'TTY MODE' ( > ) YOU MAY RETURN TO 'INPUT?'
       BY JUST TYPING <CR>.
 
       THE VARIABLE 'MAG' OF THE STANFORD MUSIC PROGRAM IS COMPUTED
       AUTOMATICALLY WHEN EVER THE STATEMENTS  SRATE←N;  OR SRT←N;
       APPEAR.  THE NUMBER OF CHANNELS IS INITIALIZED AT 1.
       THIS CAN BE CHANGED WITH NCHNS←N;.  N CAN ONLY BE
       A ONE OR A TWO.
        
         THE 'PRINT' STATEMENT WILL ONLY RECOGNIZE STANFORD NAMES, SUCH
       AS 'NCHNS' AND 'SRATE'.  THE PRINT STATEMENT CAN BE USED WITH A
       A STRING OF ITEMS SEPARATED BY PARENTHESES.  TO SEE THE CONTENTS
       OF P3, P5, SRATE AND P7+P4/2, TYPE: PRINT P3,P5,SRATE,P7+P4/2; .
 
       TO SEE THE LIST OF INSTRUMENTS CURRENTLY IN THE PROGRAM GO TO
 	 'INPUT' MODE AND TYPE A DOUBLE QUOTE (").
  
  ALL ROUTINES IN THIS PROGRAM ARE IN FORTRAN.
 
 	THE PROGRAM MAY BE LOADED AS A SINGLE LARGE PROGRAM OR IT CAN
 	BE BROKEN INTO TWO SEPARATE SMALLER PROGRAMS.  IF ENOUGH MEMORY
  	IS AVAILABLE IT IS BEST TO RUN IT AS A SINGLE PROGRAM.
 
 THE FOLLOWING FILES MUST BE LOADED TO RUN AS A SINGLE PROGRAM:
 
 M11A, M11B, M11C, T1, T2, T3
 
 THE LOADED CORE IMAGE SHOULD BE 'SAVED' UNDER THE NAME MUS11.
 
 THE OUTPUT WILL BE A BINARY FILE UNDER THE DEFAULT NAME, TEST.DAT.
 
TO RUN THE TWO HALVES OF MUS11 SEPARATELY, LOAD THE FOLLOWING:
 
FOR THE MUS10-MUSIC5 TRANSLATOR ONLY LOAD, TX,T1,T2,T3.
 
 THIS SHOULD BE SAVED UNDER THE NAME TRANS.
  THE OUTPUT OF THIS PROGRAM WILL BE A FILE WITH THE NAME, TRNS.DAT.
 
FOR PASS3 OF MUSIC5 ONLY (WHICH COMPUTES THE SOUND SAMPLES) LOAD,
 	M11A,M11B,M11C,M11RD.
THIS SHOULD BE SAVED AS PASS3.  THE OUTPUT FILE NAME WILL BE TEST.DAT.
  
(IF REVERBERATION IS USED THE FILE 'REVERB' MUST ALSO BE LOADED.)

NOTE:  ALL THE ABOVE FILES HAVE THE .FOR EXTENSION.

************ GEN FUNCTIONS **************
 
GEN FUNCTIONS (GEN1 AND GEN2 ONLY) MAY BE ENTERED IN THE STANDARD
MUSIC5 MANNER.  HOWEVER A SIMPLE SYSTEM, USING THE NAMES 'SEG' AND
'SIN' MAY ALSO BE USED.
 
SEG IS A SUBSTITUTE FOR GEN1. (LINE SEGMENTS)  THE FORMAT IS:
 	 SEG N  Y,X  Y,X  ETC. ;
WHERE N IS THE FUNCTION NUMBER AND Y AND X ARE THE Y AND X 
COORDINATES OF A GRAPH.  Y WILL ALWAYS BE AN AMPLITUDE VALUE (BETWEEN
-1 AND 1) AND X WILL BE A STEP NUMBER FROM 1 TO 100.  (THESE STEP
NUMBERS ARE CONVERTED INTERNALLY TO THE STEPS 0 TO 511 REQUIRED BY
MUSIC5.)  THE FIRST STEP NUMBER SHOULD BE 1 AND THE LAST SHOULD BE 100.
 
SIN IS A SUBSTITUTE FOR GEN2. (SINE WAVES)  THE FORMAT IS:
		SIN N  A1  A2  A3  A4  A5  ETC. ;
 
 A1, A2, ETC. ARE THE RELATIVE AMPLITUDES OF HARMONIC NUMBERS 1, 2,
ETC.  ZEROES MUST BE ENTERED IF ANY HARMONICS ARE TO BE OF ZERO
AMPLITUDE BEFORE THE HIGHEST HARMONIC DESIRED.  THUS IF HARMONICS
UP TO THE 7TH ARE DESIRED, BUT WITH THE OMISSION OF HARMONICS 2 AND 6,
THE FOLLOWING MIGHT BE ENTERED:  SIN 3 .3  0 .1 .2 .1  0 .15;
         	    [ HARMONIC NUMBERS: 1  2  3  4  5  6  7 ]

THIS WOULD CREATE A FUNCTION IN F3 WITH THE RELATIVE VALUES OF THE
HARMONICS AS LISTED.  .3 FOR HARMONIC 1, 0 FOR HARMONIC 2, ETC.
 
************* SOME LIMITS *****************
 
 AT THIS TIME PARAMETER NUMBERS NO HIGHER THAN 30 MAY BE USED IN
INSTRUMENTS.  IT MAY PROVE THAT THE LIMIT IS ACTUALLY A LITTLE LOWER
SINCE MUS11 AUTOMATICALLY CREATES THE 'STORAGE' PARAMETERS NORMALLY
REQUIRED IN MANY MUSIC5 UNIT GENERATORS. (SUCH AS 'OSC', 'ENV', ETC.)
  
IT IS ALWAYS BEST TO USE ONLY THE LOWEST PARAMETER NUMBERS NEEDED.
 
ONLY FUNCTIONS F1 TO F6 AND OUTPUT BLOCKS B1 TO B5 ARE CURRENTLY
AVAILABLE.  THIS IS TO SAVE ON CORE SIZE.  THESE TWO LIMITS ARE
EASILY EXPANDED IF DESIRED.
 
THE NUMBER OF INSTRUMENT DEFINITIONS IS LIMITED TO 15.  BUT EACH
DEFINITION MAY REFER TO MORE THAN ONE 'NAME'.  THUS INSTRUMENT
DEFINITION #1 COULD REFER TO 'TOOT', 'BEEP', AND 'HONK' WHILE
INSTRUMENT #2 MIGHT USE THE NAMES 'FUZZ', 'GRIT', AND 'BUZZ'.
THE TOTAL NUMBER OF INSTRUMENT 'NAMES' IS 27. (THIS BEING THE SAME
LIMIT AS IN THE 'SCORE' PROGRAM.)
 
NO MORE THAN 20 NOTES CAN SOUND AT ONE TIME.
 
(REMEMBER, A SINGLE INSTRUMENT 'NAME' CAN PLAY SEVERAL NOTES AT THE
SAME TIME.)